The present invention relates generally to integrated circuits and more specifically to programming integrated circuits having programmable logic and programmable analog elements.
Design engineers, faced with the challenge of designing increasingly high performance systems, often turn to programmable logic devices (PLDs) which combine logic and analog elements on the same chip. Conventional design systems for PLDs enhanced with programmable analog elements can provide support for analog circuits commonly used in conjunction with logic. For example, a user can easily configure a simple PLL or DLL circuit to achieve a desired division or multiplication, as it involves a relatively trivial computation.
However, as systems become more sophisticated, increasingly complex analog circuitry is required. The parameters for specifying these circuits are no longer a trivial matter in some cases. Consider a complex phase locked loop (PLL) analog circuit (e.g. one with two or more clock outputs and programmable loop elements). One cannot simply enter a set of parameters specifying the reconfigurable hardware elements to implement a PLL in a programmable device and expect suitable (e.g., stable) operation of the circuit. A number of stability relationships typically need to be satisfied. For example, in the Stratix PLLs, the shape of the transfer curve in frequency space must have a particular form. Special attention must be given to the ‘zero’, ‘pole’, and bandwidth values, which need to satisfy certain conditions, such as:                Fzero=1/(2*Pi*R*C); Pi=3.14        Fpole=1/(2*Pi*R*Ch);        Bandwidth=I*R*Kvco/(M*2*Pi); and        Fzero<Bandwidth<Fpole.These conditions are difficult to achieve with manual selection of the M, R, S, C, and Ch values.        
It can be appreciated therefore, that manual computation of the reconfigurable hardware elements to attain a desired circuit behavior is a very difficult (if not impossible) and a highly time intensive task, absent a detailed knowledge of circuit theory and access to an implementation of the computational algorithms. Typically, the designer knows what she wants from an analog circuit in terms of its high level, observable behavior; e.g., a certain frequency response. However, a properly configured programmable device which implements the desired analog circuit oftentimes requires a greater understanding in circuit theory than may be possessed by a system-level designer.
There is a desire to facilitate the design process of programmable devices which incorporate programmable logic and programmable analog elements. There is a need to allow designers to specify analog circuit behavior in a programmable device without requiring the intimate knowledge of circuit theory that may be needed to attain a workable implementation.